# 在Python中打开文件使用open函数，可以打开一个已经存在的文件，或者创建一个新文件
#打开文件的语法：open（“文件路径”，打开模式）

# 打开一个文件，进行写入操作
f=open("testFile.txt","w",encoding="UTF-8")
f.write("这是一个测试文件")
# 打开一个文件之后，一定要关闭，否则后面无法继续操作这个文件
f.close()

# with 语句，不管在处理文件过程中是否发生异常，都能保证 with 语句执行完毕后已经关闭打开的文件句柄。
with open("testFile.txt","r",encoding="UTF-8") as f:
    print(f.read())
    pass


##############################文件的读写操作##########################################
# 文件写入
# 打开模式为wb，以二进制的模式打开文件用于写入文件的操作
# 在进行调用write方法向文件写入内容时，需要指定编码格式
file1=open("TestFile2.txt","wb")
file1.write("床前明月光\n".encode("UTF-8"))
file1.write("疑是地上霜\n".encode("UTF-8"))
file1.close()
# 打开模式为a,会在文件末尾进行追加写入
# file2=open("TestFile3.txt","a",encoding="UTF-8")
# file2.write("床前明月光\n")
# file2.write("疑是地上霜\n")
# file2.writelines(["举头望明月\n","低头思故乡\n"])
# file2.close()

# 文件读取
file3=open("TestFile3.txt","r",encoding="UTF-8")
# print(file3.read())  #读取全部内容
print(file3.read(3))   #写入参数指定读取多少个字符
print(file3.read(2))   #第二次读取的内容会从第一次读取的位置继续往下读取
print(file3.read())
file3.close()
print("===========================================")
# 以二进制方式进行服务文件，需要对文件进行解码操作
file4=open("TestFile3.txt","rb")
# context=file4.read()  #读取全部内容
# print(context.decode("UTF-8"))
# 也可以指定读取多少内容，注意：一个中文的汉字占三个字符大小，进行读取的时候，要指定3的倍数，才能够正常解析汉字
context=file4.read(3)
print(context.decode("UTF-8"))
print(file4.read(3).decode("UTF-8"))
print(file4.read().decode("UTF-8") )
file4.close()
print("======================================")
# readlines方法，一次读取全部内容，将结果以列表的方式放回
file5=open("TestFile3.txt","r",encoding="UTF-8")
# print(file5.readlines())
# readline() 按行读取，但是一次只读取一行。
print(file5.readline())
print(file5.readline())
file5.close()

# 总结：
# 文件的读取的几种操作方式
# read   r    rb    r+    rb+
# r r+两种模式适用于普通场景的读取操作
# rb rb+两种模式是以二进制的方式读取，适用于文件   图片  音频  视频等文件的读取

# 文件写入有几种操作方法
# write  w  w+  wb   wb+   a   a+
# w  wb   w+打开文件时，若文件不存在，则创建文件，若文件存在，写入内容是，会将原内容覆盖
# wb是二进制写入，要注意编码格式，默认情况下，我们写入文件的编码是GBK
# a  ab   a+ 在原有的文件基础之后进行追加写入
